

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
    <style>
    /* base */
    html,
    body,
    .container {
      width: 100%;
      height: 100%;
    }

    a,
    a:link,
    a:visited {
      text-decoration: none;
      color: inherit;
    }

    ul {
      list-style: none;
    }

    *,
    ::before,
    ::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    *:focus {
      outline: 0;
    }

    .container {
      display: flex;
      padding-top: 20px;
    }

    /* Nav */
    .container .doc-nav {
      position: fixed;
      height: 100%;
      margin: 0 30px 0 40px;
      width: 280px;
    }

    .doc-nav .nav-header {
      display: flex;
      align-items: center;
      box-sizing: border-box;
      background-color: rgb(240, 241, 242);
      height: 40px;
      padding: 16px;
      font-size: 18px;
      font-weight: 500;
      color: rgb(62, 64, 66);
      cursor: pointer;
    }

    .doc-nav .nav-content {
      height: calc(100% - 40px);
      overflow-y: auto;
      color: rgb(32, 34, 36);
    }

    .doc-nav .nav-content .nav-list,
    .doc-nav .nav-content .nav-sub-list {
      line-height: 1.5rem;
    }

    .doc-nav .nav-content .nav-label {
      display: inline-block;
      position: relative;
      padding: 2px 0 2px 20px;
      margin-bottom: 4px;
    }

    .doc-nav .nav-content .nav-sub-label {
      position: relative;
      padding: 2px 0 2px 40px;
      font-size: 14px;
    }

    .doc-nav .nav-content .nav-sub-label:hover {
      text-decoration: underline;
    }

    .doc-nav .nav-content .nav-list .nav-label.group::before {
      border-bottom: 0.25rem solid transparent;
      border-left: 0.25rem solid #6e7072;
      border-right: 0;
      border-top: 0.25rem solid transparent;
      content: '';
      display: block;
      height: 0;
      left: 0.5rem;
      position: absolute;
      top: 0.625rem;
      transition: transform 0.1s linear;
      width: 0;
    }

    .doc-nav .nav-content .nav-list .nav-label.group.active::before {
      transform: rotate(90deg);
    }

    /* doc content */
    .container .doc-content {
      position: fixed;
      height: 100%;
      width: calc(100% - 80px - 40px - 30px - 240px);
      right: 0%;
      overflow-y: auto;
    }

    .doc-title {
      border-bottom: 1px solid #dcdee0;
      font-size: 22px;
      margin: 8px 0 0;
      padding-bottom: 16px;
    }

    .doc-content h3 {
      font-size: 24px;
      font-weight: 600;
      margin: 24px 0;
    }

    .doc-content h4 {
      font-size: 22px;
      font-weight: 500;
      margin: 30px 0 8px;
    }

    .doc-content h4 span {
      color: #007d9c;
    }

    .doc-content .doc-declare {
      background-color: #fafafa;
      border-radius: 5px;
      border: 1px solid #ccc;
      font-size: 14px;
      overflow-x: auto;
      padding: 10px;
      tab-size: 4;
      line-height: 20px;
    }

    .doc-content .doc-comment {
      font-size: 16px;
      margin: 16px 0;
      line-height: 24px;
      word-break: break-word;
    }
  </style>

</head>
<body>
  <div class="container">
    <div class="doc-nav">
      <a href="#Documentation" class="nav-header">Documentation</a>
      <nav class="nav-content">
        <ul class="nav-list">
          <li>
            <a href="#includes" class="nav-label">Includes</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#lwip/opt.h" class="nav-sub-label">lwip/opt.h</a>
              </li>
      

              <li>
                <a href="#lwip/err.h" class="nav-sub-label">lwip/err.h</a>
              </li>
      

              <li>
                <a href="#lwip/ip_addr.h" class="nav-sub-label">lwip/ip_addr.h</a>
              </li>
      

              <li>
                <a href="#lwip/def.h" class="nav-sub-label">lwip/def.h</a>
              </li>
      

              <li>
                <a href="#lwip/pbuf.h" class="nav-sub-label">lwip/pbuf.h</a>
              </li>
      

              <li>
                <a href="#lwip/stats.h" class="nav-sub-label">lwip/stats.h</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#macros" class="nav-label">Macros</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#LWIP_HDR_NETIF_H" class="nav-sub-label">LWIP_HDR_NETIF_H</a>
              </li>
      

              <li>
                <a href="#ENABLE_LOOPBACK" class="nav-sub-label">ENABLE_LOOPBACK</a>
              </li>
      

              <li>
                <a href="#NETIF_MAX_HWADDR_LEN" class="nav-sub-label">NETIF_MAX_HWADDR_LEN</a>
              </li>
      

              <li>
                <a href="#NETIF_NAMESIZE" class="nav-sub-label">NETIF_NAMESIZE</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_UP" class="nav-sub-label">NETIF_FLAG_UP</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_BROADCAST" class="nav-sub-label">NETIF_FLAG_BROADCAST</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_LINK_UP" class="nav-sub-label">NETIF_FLAG_LINK_UP</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_ETHARP" class="nav-sub-label">NETIF_FLAG_ETHARP</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_ETHERNET" class="nav-sub-label">NETIF_FLAG_ETHERNET</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_IGMP" class="nav-sub-label">NETIF_FLAG_IGMP</a>
              </li>
      

              <li>
                <a href="#NETIF_FLAG_MLD6" class="nav-sub-label">NETIF_FLAG_MLD6</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_GEN_IP" class="nav-sub-label">NETIF_CHECKSUM_GEN_IP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_GEN_UDP" class="nav-sub-label">NETIF_CHECKSUM_GEN_UDP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_GEN_TCP" class="nav-sub-label">NETIF_CHECKSUM_GEN_TCP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_GEN_ICMP" class="nav-sub-label">NETIF_CHECKSUM_GEN_ICMP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_GEN_ICMP6" class="nav-sub-label">NETIF_CHECKSUM_GEN_ICMP6</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_CHECK_IP" class="nav-sub-label">NETIF_CHECKSUM_CHECK_IP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_CHECK_UDP" class="nav-sub-label">NETIF_CHECKSUM_CHECK_UDP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_CHECK_TCP" class="nav-sub-label">NETIF_CHECKSUM_CHECK_TCP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_CHECK_ICMP" class="nav-sub-label">NETIF_CHECKSUM_CHECK_ICMP</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_CHECK_ICMP6" class="nav-sub-label">NETIF_CHECKSUM_CHECK_ICMP6</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_ENABLE_ALL" class="nav-sub-label">NETIF_CHECKSUM_ENABLE_ALL</a>
              </li>
      

              <li>
                <a href="#NETIF_CHECKSUM_DISABLE_ALL" class="nav-sub-label">NETIF_CHECKSUM_DISABLE_ALL</a>
              </li>
      

              <li>
                <a href="#netif_set_client_data(netif, id, data)" class="nav-sub-label">netif_set_client_data(netif, id, data)</a>
              </li>
      

              <li>
                <a href="#netif_get_client_data(netif, id)" class="nav-sub-label">netif_get_client_data(netif, id)</a>
              </li>
      

              <li>
                <a href="#LWIP_NETIF_USE_HINTS" class="nav-sub-label">LWIP_NETIF_USE_HINTS</a>
              </li>
      

              <li>
                <a href="#LWIP_NETIF_USE_HINTS" class="nav-sub-label">LWIP_NETIF_USE_HINTS</a>
              </li>
      

              <li>
                <a href="#NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)" class="nav-sub-label">NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)</a>
              </li>
      

              <li>
                <a href="#IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)" class="nav-sub-label">IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)</a>
              </li>
      

              <li>
                <a href="#NETIF_SET_CHECKSUM_CTRL" class="nav-sub-label">NETIF_SET_CHECKSUM_CTRL</a>
              </li>
      

              <li>
                <a href="#IF__NETIF_CHECKSUM_ENABLED" class="nav-sub-label">IF__NETIF_CHECKSUM_ENABLED</a>
              </li>
      

              <li>
                <a href="#NETIF_FOREACH(netif)" class="nav-sub-label">NETIF_FOREACH(netif)</a>
              </li>
      

              <li>
                <a href="#NETIF_FOREACH(netif)" class="nav-sub-label">NETIF_FOREACH(netif)</a>
              </li>
      

              <li>
                <a href="#netif_ip4_addr(netif)" class="nav-sub-label">netif_ip4_addr(netif)</a>
              </li>
      

              <li>
                <a href="#netif_ip4_netmask(netif)" class="nav-sub-label">netif_ip4_netmask(netif)</a>
              </li>
      

              <li>
                <a href="#netif_ip4_gw(netif)" class="nav-sub-label">netif_ip4_gw(netif)</a>
              </li>
      

              <li>
                <a href="#netif_ip_addr4(netif)" class="nav-sub-label">netif_ip_addr4(netif)</a>
              </li>
      

              <li>
                <a href="#netif_ip_netmask4(netif)" class="nav-sub-label">netif_ip_netmask4(netif)</a>
              </li>
      

              <li>
                <a href="#netif_ip_gw4(netif)" class="nav-sub-label">netif_ip_gw4(netif)</a>
              </li>
      

              <li>
                <a href="#netif_set_flags(netif, set_flags)" class="nav-sub-label">netif_set_flags(netif, set_flags)</a>
              </li>
      

              <li>
                <a href="#netif_clear_flags(netif, clr_flags)" class="nav-sub-label">netif_clear_flags(netif, clr_flags)</a>
              </li>
      

              <li>
                <a href="#netif_is_flag_set(nefif, flag)" class="nav-sub-label">netif_is_flag_set(nefif, flag)</a>
              </li>
      

              <li>
                <a href="#netif_is_up(netif)" class="nav-sub-label">netif_is_up(netif)</a>
              </li>
      

              <li>
                <a href="#netif_is_link_up(netif)" class="nav-sub-label">netif_is_link_up(netif)</a>
              </li>
      

              <li>
                <a href="#netif_set_hostname(netif, name)" class="nav-sub-label">netif_set_hostname(netif, name)</a>
              </li>
      

              <li>
                <a href="#netif_get_hostname(netif)" class="nav-sub-label">netif_get_hostname(netif)</a>
              </li>
      

              <li>
                <a href="#netif_set_igmp_mac_filter(netif, function)" class="nav-sub-label">netif_set_igmp_mac_filter(netif, function)</a>
              </li>
      

              <li>
                <a href="#netif_get_igmp_mac_filter(netif)" class="nav-sub-label">netif_get_igmp_mac_filter(netif)</a>
              </li>
      

              <li>
                <a href="#netif_set_mld_mac_filter(netif, function)" class="nav-sub-label">netif_set_mld_mac_filter(netif, function)</a>
              </li>
      

              <li>
                <a href="#netif_get_mld_mac_filter(netif)" class="nav-sub-label">netif_get_mld_mac_filter(netif)</a>
              </li>
      

              <li>
                <a href="#netif_mld_mac_filter(netif, addr, action)" class="nav-sub-label">netif_mld_mac_filter(netif, addr, action)</a>
              </li>
      

              <li>
                <a href="#netif_ip_addr6(netif, i)" class="nav-sub-label">netif_ip_addr6(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr(netif, i)" class="nav-sub-label">netif_ip6_addr(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_state(netif, i)" class="nav-sub-label">netif_ip6_addr_state(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_set_ip6_autoconfig_enabled(netif, action)" class="nav-sub-label">netif_set_ip6_autoconfig_enabled(netif, action)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_valid_life(netif, i)" class="nav-sub-label">netif_ip6_addr_valid_life(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_set_valid_life(netif, i, secs)" class="nav-sub-label">netif_ip6_addr_set_valid_life(netif, i, secs)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_pref_life(netif, i)" class="nav-sub-label">netif_ip6_addr_pref_life(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_set_pref_life(netif, i, secs)" class="nav-sub-label">netif_ip6_addr_set_pref_life(netif, i, secs)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_isstatic(netif, i)" class="nav-sub-label">netif_ip6_addr_isstatic(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_isstatic(netif, i)" class="nav-sub-label">netif_ip6_addr_isstatic(netif, i)</a>
              </li>
      

              <li>
                <a href="#netif_mtu6(netif)" class="nav-sub-label">netif_mtu6(netif)</a>
              </li>
      

              <li>
                <a href="#netif_mtu6(netif)" class="nav-sub-label">netif_mtu6(netif)</a>
              </li>
      

              <li>
                <a href="#NETIF_SET_HINTS(netif, netifhint)" class="nav-sub-label">NETIF_SET_HINTS(netif, netifhint)</a>
              </li>
      

              <li>
                <a href="#NETIF_RESET_HINTS(netif)" class="nav-sub-label">NETIF_RESET_HINTS(netif)</a>
              </li>
      

              <li>
                <a href="#NETIF_SET_HINTS" class="nav-sub-label">NETIF_SET_HINTS</a>
              </li>
      

              <li>
                <a href="#NETIF_RESET_HINTS" class="nav-sub-label">NETIF_RESET_HINTS</a>
              </li>
      

              <li>
                <a href="#netif_get_index(netif)" class="nav-sub-label">netif_get_index(netif)</a>
              </li>
      

              <li>
                <a href="#NETIF_NO_INDEX" class="nav-sub-label">NETIF_NO_INDEX</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_NONE" class="nav-sub-label">LWIP_NSC_NONE</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_NETIF_ADDED" class="nav-sub-label">LWIP_NSC_NETIF_ADDED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_NETIF_REMOVED" class="nav-sub-label">LWIP_NSC_NETIF_REMOVED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_LINK_CHANGED" class="nav-sub-label">LWIP_NSC_LINK_CHANGED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_STATUS_CHANGED" class="nav-sub-label">LWIP_NSC_STATUS_CHANGED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_IPV4_ADDRESS_CHANGED" class="nav-sub-label">LWIP_NSC_IPV4_ADDRESS_CHANGED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_IPV4_GATEWAY_CHANGED" class="nav-sub-label">LWIP_NSC_IPV4_GATEWAY_CHANGED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_IPV4_NETMASK_CHANGED" class="nav-sub-label">LWIP_NSC_IPV4_NETMASK_CHANGED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_IPV4_SETTINGS_CHANGED" class="nav-sub-label">LWIP_NSC_IPV4_SETTINGS_CHANGED</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_IPV6_SET" class="nav-sub-label">LWIP_NSC_IPV6_SET</a>
              </li>
      

              <li>
                <a href="#LWIP_NSC_IPV6_ADDR_STATE_CHANGED" class="nav-sub-label">LWIP_NSC_IPV6_ADDR_STATE_CHANGED</a>
              </li>
      

              <li>
                <a href="#NETIF_DECLARE_EXT_CALLBACK(name)" class="nav-sub-label">NETIF_DECLARE_EXT_CALLBACK(name)</a>
              </li>
      

              <li>
                <a href="#NETIF_DECLARE_EXT_CALLBACK" class="nav-sub-label">NETIF_DECLARE_EXT_CALLBACK</a>
              </li>
      

              <li>
                <a href="#netif_add_ext_callback" class="nav-sub-label">netif_add_ext_callback</a>
              </li>
      

              <li>
                <a href="#netif_remove_ext_callback" class="nav-sub-label">netif_remove_ext_callback</a>
              </li>
      

              <li>
                <a href="#netif_invoke_ext_callback" class="nav-sub-label">netif_invoke_ext_callback</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#functions" class="nav-label">Functions</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#netif_alloc_client_data_id" class="nav-sub-label">netif_alloc_client_data_id</a>
              </li>
      

              <li>
                <a href="#netif_init" class="nav-sub-label">netif_init</a>
              </li>
      

              <li>
                <a href="#netif_set_addr" class="nav-sub-label">netif_set_addr</a>
              </li>
      

              <li>
                <a href="#netif_remove" class="nav-sub-label">netif_remove</a>
              </li>
      

              <li>
                <a href="#netif_set_default" class="nav-sub-label">netif_set_default</a>
              </li>
      

              <li>
                <a href="#netif_set_ipaddr" class="nav-sub-label">netif_set_ipaddr</a>
              </li>
      

              <li>
                <a href="#netif_set_netmask" class="nav-sub-label">netif_set_netmask</a>
              </li>
      

              <li>
                <a href="#netif_set_gw" class="nav-sub-label">netif_set_gw</a>
              </li>
      

              <li>
                <a href="#netif_set_up" class="nav-sub-label">netif_set_up</a>
              </li>
      

              <li>
                <a href="#netif_set_down" class="nav-sub-label">netif_set_down</a>
              </li>
      

              <li>
                <a href="#netif_set_status_callback" class="nav-sub-label">netif_set_status_callback</a>
              </li>
      

              <li>
                <a href="#netif_set_remove_callback" class="nav-sub-label">netif_set_remove_callback</a>
              </li>
      

              <li>
                <a href="#netif_set_link_up" class="nav-sub-label">netif_set_link_up</a>
              </li>
      

              <li>
                <a href="#netif_set_link_down" class="nav-sub-label">netif_set_link_down</a>
              </li>
      

              <li>
                <a href="#netif_set_link_callback" class="nav-sub-label">netif_set_link_callback</a>
              </li>
      

              <li>
                <a href="#netif_loop_output" class="nav-sub-label">netif_loop_output</a>
              </li>
      

              <li>
                <a href="#netif_poll" class="nav-sub-label">netif_poll</a>
              </li>
      

              <li>
                <a href="#netif_poll_all" class="nav-sub-label">netif_poll_all</a>
              </li>
      

              <li>
                <a href="#netif_input" class="nav-sub-label">netif_input</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_set" class="nav-sub-label">netif_ip6_addr_set</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_set_parts" class="nav-sub-label">netif_ip6_addr_set_parts</a>
              </li>
      

              <li>
                <a href="#netif_ip6_addr_set_state" class="nav-sub-label">netif_ip6_addr_set_state</a>
              </li>
      

              <li>
                <a href="#netif_get_ip6_addr_match" class="nav-sub-label">netif_get_ip6_addr_match</a>
              </li>
      

              <li>
                <a href="#netif_create_ip6_linklocal_address" class="nav-sub-label">netif_create_ip6_linklocal_address</a>
              </li>
      

              <li>
                <a href="#netif_add_ip6_address" class="nav-sub-label">netif_add_ip6_address</a>
              </li>
      

              <li>
                <a href="#netif_name_to_index" class="nav-sub-label">netif_name_to_index</a>
              </li>
      

              <li>
                <a href="#netif_add_ext_callback" class="nav-sub-label">netif_add_ext_callback</a>
              </li>
      

              <li>
                <a href="#netif_remove_ext_callback" class="nav-sub-label">netif_remove_ext_callback</a>
              </li>
      

              <li>
                <a href="#netif_invoke_ext_callback" class="nav-sub-label">netif_invoke_ext_callback</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#vars" class="nav-label">Vars</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#netif" class="nav-sub-label">netif</a>
              </li>
      

              <li>
                <a href="#netif" class="nav-sub-label">netif</a>
              </li>
      

              <li>
                <a href="#netif" class="nav-sub-label">netif</a>
              </li>
      

              <li>
                <a href="#netif" class="nav-sub-label">netif</a>
              </li>
      

              <li>
                <a href="#netif" class="nav-sub-label">netif</a>
              </li>
      

              <li>
                <a href="#char" class="nav-sub-label">char</a>
              </li>
      

              <li>
                <a href="#netif" class="nav-sub-label">netif</a>
              </li>
      

              <li>
                <a href="#netif_ext_callback" class="nav-sub-label">netif_ext_callback</a>
              </li>
      
            </ul>
            
          </li>
          <li>
            <a href="#consts" class="nav-label">Consts</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#types" class="nav-label">Types</a>
            
            <ul class="nav-sub-list">
            
            </ul>
            
          </li>
          <li>
            <a href="#typedefs" class="nav-label">Typedefs</a>
             
            <ul class="nav-sub-list">

              <li>
                <a href="#netif_init_fn" class="nav-sub-label">netif_init_fn</a>
              </li>
      

              <li>
                <a href="#netif_input_fn" class="nav-sub-label">netif_input_fn</a>
              </li>
      

              <li>
                <a href="#netif_output_fn" class="nav-sub-label">netif_output_fn</a>
              </li>
      

              <li>
                <a href="#netif_output_ip6_fn" class="nav-sub-label">netif_output_ip6_fn</a>
              </li>
      

              <li>
                <a href="#netif_linkoutput_fn" class="nav-sub-label">netif_linkoutput_fn</a>
              </li>
      

              <li>
                <a href="#netif_status_callback_fn" class="nav-sub-label">netif_status_callback_fn</a>
              </li>
      

              <li>
                <a href="#netif_mld_mac_filter_fn" class="nav-sub-label">netif_mld_mac_filter_fn</a>
              </li>
      

              <li>
                <a href="#netif_addr_idx_t" class="nav-sub-label">netif_addr_idx_t</a>
              </li>
      

              <li>
                <a href="#netif_nsc_reason_t" class="nav-sub-label">netif_nsc_reason_t</a>
              </li>
      

              <li>
                <a href="#link_changed;
" class="nav-sub-label">link_changed;
</a>
              </li>
      

              <li>
                <a href="#netif_ext_callback_fn" class="nav-sub-label">netif_ext_callback_fn</a>
              </li>
      

              <li>
                <a href="#netif_ext_callback_t;
" class="nav-sub-label">netif_ext_callback_t;
</a>
              </li>
      
            </ul>
            
          </li>
        </ul>
      </nav>
    </div>
    <div class="doc-content">
      <h2 id="Documentation" class="doc-title">Documentation</h2>
      <h3 id="includes">Includes</h3>
      

      <h4 id="lwip/opt.h"><span>lwip/opt.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/opt.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/opt.h"
</pre>

      <h4 id="lwip/err.h"><span>lwip/err.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/err.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/err.h"
</pre>

      <h4 id="lwip/ip_addr.h"><span>lwip/ip_addr.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/ip_addr.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/ip_addr.h"
</pre>

      <h4 id="lwip/def.h"><span>lwip/def.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/def.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/def.h"
</pre>

      <h4 id="lwip/pbuf.h"><span>lwip/pbuf.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/pbuf.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/pbuf.h"
</pre>

      <h4 id="lwip/stats.h"><span>lwip/stats.h</span></h4>
      <pre class="doc-declare"><code>#include "lwip/stats.h"
</code></pre>
      <pre class="doc-comment">#include "lwip/stats.h"
</pre>
      <h3 id="macros">Macros</h3>
      

      <h4 id="LWIP_HDR_NETIF_H">Marco <span>LWIP_HDR_NETIF_H</span></h4>
      <pre class="doc-declare"><code>#define LWIP_HDR_NETIF_H
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="ENABLE_LOOPBACK">Marco <span>ENABLE_LOOPBACK</span></h4>
      <pre class="doc-declare"><code>#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_MAX_HWADDR_LEN">Marco <span>NETIF_MAX_HWADDR_LEN</span></h4>
      <pre class="doc-declare"><code>#define NETIF_MAX_HWADDR_LEN 6U
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_NAMESIZE">Marco <span>NETIF_NAMESIZE</span></h4>
      <pre class="doc-declare"><code>#define NETIF_NAMESIZE 6
</code></pre>
      <pre class="doc-comment">/** The size of a fully constructed netif name which the
 * netif can be identified by in APIs. Composed of
 * 2 chars, 3 (max) digits, and 1 \0
 */</pre>

      <h4 id="NETIF_FLAG_UP">Marco <span>NETIF_FLAG_UP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_UP          0x01U
</code></pre>
      <pre class="doc-comment">/** Whether the network interface is 'up'. This is
 * a software flag used to control whether this network
 * interface is enabled and processes traffic.
 * It must be set by the startup code before this netif can be used
 * (also for dhcp/autoip).
 */</pre>

      <h4 id="NETIF_FLAG_BROADCAST">Marco <span>NETIF_FLAG_BROADCAST</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_BROADCAST   0x02U
</code></pre>
      <pre class="doc-comment">/** If set, the netif has broadcast capability.
 * Set by the netif driver in its init function. */</pre>

      <h4 id="NETIF_FLAG_LINK_UP">Marco <span>NETIF_FLAG_LINK_UP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_LINK_UP     0x04U
</code></pre>
      <pre class="doc-comment">/** If set, the interface has an active link
 *  (set by the network interface driver).
 * Either set by the netif driver in its init function (if the link
 * is up at that time) or at a later point once the link comes up
 * (if link detection is supported by the hardware). */</pre>

      <h4 id="NETIF_FLAG_ETHARP">Marco <span>NETIF_FLAG_ETHARP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_ETHARP      0x08U
</code></pre>
      <pre class="doc-comment">/** If set, the netif is an ethernet device using ARP.
 * Set by the netif driver in its init function.
 * Used to check input packet types and use of DHCP. */</pre>

      <h4 id="NETIF_FLAG_ETHERNET">Marco <span>NETIF_FLAG_ETHERNET</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_ETHERNET    0x10U
</code></pre>
      <pre class="doc-comment">/** If set, the netif is an ethernet device. It might not use
 * ARP or TCP/IP if it is used for PPPoE only.
 */</pre>

      <h4 id="NETIF_FLAG_IGMP">Marco <span>NETIF_FLAG_IGMP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_IGMP        0x20U
</code></pre>
      <pre class="doc-comment">/** If set, the netif has IGMP capability.
 * Set by the netif driver in its init function. */</pre>

      <h4 id="NETIF_FLAG_MLD6">Marco <span>NETIF_FLAG_MLD6</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FLAG_MLD6        0x40U
</code></pre>
      <pre class="doc-comment">/** If set, the netif has MLD6 capability.
 * Set by the netif driver in its init function. */</pre>

      <h4 id="NETIF_CHECKSUM_GEN_IP">Marco <span>NETIF_CHECKSUM_GEN_IP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_GEN_IP      1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_GEN_UDP">Marco <span>NETIF_CHECKSUM_GEN_UDP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_GEN_UDP     2
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_GEN_TCP">Marco <span>NETIF_CHECKSUM_GEN_TCP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_GEN_TCP     4
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_GEN_ICMP">Marco <span>NETIF_CHECKSUM_GEN_ICMP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_GEN_ICMP    8
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_GEN_ICMP6">Marco <span>NETIF_CHECKSUM_GEN_ICMP6</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_GEN_ICMP6   16
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_CHECK_IP">Marco <span>NETIF_CHECKSUM_CHECK_IP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_CHECK_IP    256
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_CHECK_UDP">Marco <span>NETIF_CHECKSUM_CHECK_UDP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_CHECK_UDP   512
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_CHECK_TCP">Marco <span>NETIF_CHECKSUM_CHECK_TCP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_CHECK_TCP   1024
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_CHECK_ICMP">Marco <span>NETIF_CHECKSUM_CHECK_ICMP</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_CHECK_ICMP  2048
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_CHECK_ICMP6">Marco <span>NETIF_CHECKSUM_CHECK_ICMP6</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_CHECK_ICMP6 4096
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_ENABLE_ALL">Marco <span>NETIF_CHECKSUM_ENABLE_ALL</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_ENABLE_ALL  65535
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_CHECKSUM_DISABLE_ALL">Marco <span>NETIF_CHECKSUM_DISABLE_ALL</span></h4>
      <pre class="doc-declare"><code>#define NETIF_CHECKSUM_DISABLE_ALL 0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_client_data(netif, id, data)">Marco <span>netif_set_client_data(netif, id, data)</span></h4>
      <pre class="doc-declare"><code>#define netif_set_client_data(netif, id, data) netif_get_client_data(netif, id) = (data)
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_cd
 * Set client data. Obtain ID from netif_alloc_client_data_id().
 */</pre>

      <h4 id="netif_get_client_data(netif, id)">Marco <span>netif_get_client_data(netif, id)</span></h4>
      <pre class="doc-declare"><code>#define netif_get_client_data(netif, id)      (netif)->client_data[(id)]
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_cd
 * Get client data. Obtain ID from netif_alloc_client_data_id().
 */</pre>

      <h4 id="LWIP_NETIF_USE_HINTS">Marco <span>LWIP_NETIF_USE_HINTS</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NETIF_USE_HINTS             1
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="LWIP_NETIF_USE_HINTS">Marco <span>LWIP_NETIF_USE_HINTS</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NETIF_USE_HINTS             0
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)">Marco <span>NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)</span></h4>
      <pre class="doc-declare"><code>#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags) do { \
 (netif)->chksum_flags = chksumflags; } while(0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)">Marco <span>IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)</span></h4>
      <pre class="doc-declare"><code>#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag) if (((netif) == NULL) || (((netif)->chksum_flags & (chksumflag)) != 0))
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_SET_CHECKSUM_CTRL">Marco <span>NETIF_SET_CHECKSUM_CTRL</span></h4>
      <pre class="doc-declare"><code>#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="IF__NETIF_CHECKSUM_ENABLED">Marco <span>IF__NETIF_CHECKSUM_ENABLED</span></h4>
      <pre class="doc-declare"><code>#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_FOREACH(netif)">Marco <span>NETIF_FOREACH(netif)</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FOREACH(netif) if (((netif) = netif_default) != NULL)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_FOREACH(netif)">Marco <span>NETIF_FOREACH(netif)</span></h4>
      <pre class="doc-declare"><code>#define NETIF_FOREACH(netif) for ((netif) = netif_list; (netif) != NULL; (netif) = (netif)->next)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip4_addr(netif)">Marco <span>netif_ip4_addr(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip4_addr(netif)   ((const ip4_addr_t*)ip_2_ip4(&((netif)->ip_addr)))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip4 */</pre>

      <h4 id="netif_ip4_netmask(netif)">Marco <span>netif_ip4_netmask(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip4_netmask(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->netmask)))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip4 */</pre>

      <h4 id="netif_ip4_gw(netif)">Marco <span>netif_ip4_gw(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip4_gw(netif)     ((const ip4_addr_t*)ip_2_ip4(&((netif)->gw)))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip4 */</pre>

      <h4 id="netif_ip_addr4(netif)">Marco <span>netif_ip_addr4(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip_addr4(netif)   ((const ip_addr_t*)&((netif)->ip_addr))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip4 */</pre>

      <h4 id="netif_ip_netmask4(netif)">Marco <span>netif_ip_netmask4(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip_netmask4(netif) ((const ip_addr_t*)&((netif)->netmask))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip4 */</pre>

      <h4 id="netif_ip_gw4(netif)">Marco <span>netif_ip_gw4(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip_gw4(netif)     ((const ip_addr_t*)&((netif)->gw))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip4 */</pre>

      <h4 id="netif_set_flags(netif, set_flags)">Marco <span>netif_set_flags(netif, set_flags)</span></h4>
      <pre class="doc-declare"><code>#define netif_set_flags(netif, set_flags)    do { (netif)->flags = (u8_t)((netif)->flags | (set_flags)); } while(0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_clear_flags(netif, clr_flags)">Marco <span>netif_clear_flags(netif, clr_flags)</span></h4>
      <pre class="doc-declare"><code>#define netif_clear_flags(netif, clr_flags)  do { (netif)->flags = (u8_t)((netif)->flags & (u8_t)(~(clr_flags) & 255)); } while(0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_is_flag_set(nefif, flag)">Marco <span>netif_is_flag_set(nefif, flag)</span></h4>
      <pre class="doc-declare"><code>#define netif_is_flag_set(nefif, flag)       (((netif)->flags & (flag)) != 0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_is_up(netif)">Marco <span>netif_is_up(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_is_up(netif) (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0)
</code></pre>
      <pre class="doc-comment">/** @ingroup netif
 * Ask if an interface is up
 */</pre>

      <h4 id="netif_is_link_up(netif)">Marco <span>netif_is_link_up(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_is_link_up(netif) (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0)
</code></pre>
      <pre class="doc-comment">/** Ask if a link is up */</pre>

      <h4 id="netif_set_hostname(netif, name)">Marco <span>netif_set_hostname(netif, name)</span></h4>
      <pre class="doc-declare"><code>#define netif_set_hostname(netif, name) do { if((netif) != NULL) { (netif)->hostname = name; }}while(0)
</code></pre>
      <pre class="doc-comment">/** @ingroup netif */</pre>

      <h4 id="netif_get_hostname(netif)">Marco <span>netif_get_hostname(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_get_hostname(netif) (((netif) != NULL) ? ((netif)->hostname) : NULL)
</code></pre>
      <pre class="doc-comment">/** @ingroup netif */</pre>

      <h4 id="netif_set_igmp_mac_filter(netif, function)">Marco <span>netif_set_igmp_mac_filter(netif, function)</span></h4>
      <pre class="doc-declare"><code>#define netif_set_igmp_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->igmp_mac_filter = function; }}while(0)
</code></pre>
      <pre class="doc-comment">/** @ingroup netif */</pre>

      <h4 id="netif_get_igmp_mac_filter(netif)">Marco <span>netif_get_igmp_mac_filter(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_get_igmp_mac_filter(netif) (((netif) != NULL) ? ((netif)->igmp_mac_filter) : NULL)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_mld_mac_filter(netif, function)">Marco <span>netif_set_mld_mac_filter(netif, function)</span></h4>
      <pre class="doc-declare"><code>#define netif_set_mld_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->mld_mac_filter = function; }}while(0)
</code></pre>
      <pre class="doc-comment">/** @ingroup netif */</pre>

      <h4 id="netif_get_mld_mac_filter(netif)">Marco <span>netif_get_mld_mac_filter(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_get_mld_mac_filter(netif) (((netif) != NULL) ? ((netif)->mld_mac_filter) : NULL)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_mld_mac_filter(netif, addr, action)">Marco <span>netif_mld_mac_filter(netif, addr, action)</span></h4>
      <pre class="doc-declare"><code>#define netif_mld_mac_filter(netif, addr, action) do { if((netif) && (netif)->mld_mac_filter) { (netif)->mld_mac_filter((netif), (addr), (action)); }}while(0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip_addr6(netif, i)">Marco <span>netif_ip_addr6(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip_addr6(netif, i) ((const ip_addr_t*)(&((netif)->ip6_addr[i])))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip6 */</pre>

      <h4 id="netif_ip6_addr(netif, i)">Marco <span>netif_ip6_addr(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr(netif, i) ((const ip6_addr_t*)ip_2_ip6(&((netif)->ip6_addr[i])))
</code></pre>
      <pre class="doc-comment">/** @ingroup netif_ip6 */</pre>

      <h4 id="netif_ip6_addr_state(netif, i)">Marco <span>netif_ip6_addr_state(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_state(netif, i) ((netif)->ip6_addr_state[i])
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_ip6_autoconfig_enabled(netif, action)">Marco <span>netif_set_ip6_autoconfig_enabled(netif, action)</span></h4>
      <pre class="doc-declare"><code>#define netif_set_ip6_autoconfig_enabled(netif, action) do { if(netif) { (netif)->ip6_autoconfig_enabled = (action); }}while(0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_valid_life(netif, i)">Marco <span>netif_ip6_addr_valid_life(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_valid_life(netif, i) \
   (((netif) != NULL) ? ((netif)->ip6_addr_valid_life[i]) : IP6_ADDR_LIFE_STATIC)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_set_valid_life(netif, i, secs)">Marco <span>netif_ip6_addr_set_valid_life(netif, i, secs)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_set_valid_life(netif, i, secs) \
   do { if (netif != NULL) { (netif)->ip6_addr_valid_life[i] = (secs); }} while (0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_pref_life(netif, i)">Marco <span>netif_ip6_addr_pref_life(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_pref_life(netif, i) \
   (((netif) != NULL) ? ((netif)->ip6_addr_pref_life[i]) : IP6_ADDR_LIFE_STATIC)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_set_pref_life(netif, i, secs)">Marco <span>netif_ip6_addr_set_pref_life(netif, i, secs)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_set_pref_life(netif, i, secs) \
   do { if (netif != NULL) { (netif)->ip6_addr_pref_life[i] = (secs); }} while (0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_isstatic(netif, i)">Marco <span>netif_ip6_addr_isstatic(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_isstatic(netif, i) \
   (netif_ip6_addr_valid_life((netif), (i)) == IP6_ADDR_LIFE_STATIC)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_isstatic(netif, i)">Marco <span>netif_ip6_addr_isstatic(netif, i)</span></h4>
      <pre class="doc-declare"><code>#define netif_ip6_addr_isstatic(netif, i) (1) /* all addresses are static */
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_mtu6(netif)">Marco <span>netif_mtu6(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_mtu6(netif) ((netif)->mtu6)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_mtu6(netif)">Marco <span>netif_mtu6(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_mtu6(netif) ((netif)->mtu)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_SET_HINTS(netif, netifhint)">Marco <span>NETIF_SET_HINTS(netif, netifhint)</span></h4>
      <pre class="doc-declare"><code>#define NETIF_SET_HINTS(netif, netifhint) (netif)->hints = (netifhint)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_RESET_HINTS(netif)">Marco <span>NETIF_RESET_HINTS(netif)</span></h4>
      <pre class="doc-declare"><code>#define NETIF_RESET_HINTS(netif)     (netif)->hints = NULL
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_SET_HINTS">Marco <span>NETIF_SET_HINTS</span></h4>
      <pre class="doc-declare"><code>#define NETIF_SET_HINTS(netif, netifhint)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_RESET_HINTS">Marco <span>NETIF_RESET_HINTS</span></h4>
      <pre class="doc-declare"><code>#define NETIF_RESET_HINTS(netif)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_get_index(netif)">Marco <span>netif_get_index(netif)</span></h4>
      <pre class="doc-declare"><code>#define netif_get_index(netif)     ((u8_t)((netif)->num + 1))
</code></pre>
      <pre class="doc-comment">/* Interface indexes always start at 1 per RFC 3493, section 4, num starts at 0 (internal index is 0..254)*/</pre>

      <h4 id="NETIF_NO_INDEX">Marco <span>NETIF_NO_INDEX</span></h4>
      <pre class="doc-declare"><code>#define NETIF_NO_INDEX             (0)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="LWIP_NSC_NONE">Marco <span>LWIP_NSC_NONE</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_NONE                    0
</code></pre>
      <pre class="doc-comment">/* used for initialization only */</pre>

      <h4 id="LWIP_NSC_NETIF_ADDED">Marco <span>LWIP_NSC_NETIF_ADDED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_NETIF_ADDED             1
</code></pre>
      <pre class="doc-comment">/** netif was added. arg: NULL. Called AFTER netif was added. */</pre>

      <h4 id="LWIP_NSC_NETIF_REMOVED">Marco <span>LWIP_NSC_NETIF_REMOVED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_NETIF_REMOVED           2
</code></pre>
      <pre class="doc-comment">/** netif was removed. arg: NULL. Called BEFORE netif is removed. */</pre>

      <h4 id="LWIP_NSC_LINK_CHANGED">Marco <span>LWIP_NSC_LINK_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_LINK_CHANGED            4
</code></pre>
      <pre class="doc-comment">/** link changed */</pre>

      <h4 id="LWIP_NSC_STATUS_CHANGED">Marco <span>LWIP_NSC_STATUS_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_STATUS_CHANGED          8
</code></pre>
      <pre class="doc-comment">/** netif administrative status changed.\n
  * up is called AFTER netif is set up.\n
  * down is called BEFORE the netif is actually set down. */</pre>

      <h4 id="LWIP_NSC_IPV4_ADDRESS_CHANGED">Marco <span>LWIP_NSC_IPV4_ADDRESS_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_IPV4_ADDRESS_CHANGED    16
</code></pre>
      <pre class="doc-comment">/** IPv4 address has changed */</pre>

      <h4 id="LWIP_NSC_IPV4_GATEWAY_CHANGED">Marco <span>LWIP_NSC_IPV4_GATEWAY_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_IPV4_GATEWAY_CHANGED    32
</code></pre>
      <pre class="doc-comment">/** IPv4 gateway has changed */</pre>

      <h4 id="LWIP_NSC_IPV4_NETMASK_CHANGED">Marco <span>LWIP_NSC_IPV4_NETMASK_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_IPV4_NETMASK_CHANGED    64
</code></pre>
      <pre class="doc-comment">/** IPv4 netmask has changed */</pre>

      <h4 id="LWIP_NSC_IPV4_SETTINGS_CHANGED">Marco <span>LWIP_NSC_IPV4_SETTINGS_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_IPV4_SETTINGS_CHANGED   128
</code></pre>
      <pre class="doc-comment">/** called AFTER IPv4 address/gateway/netmask changes have been applied */</pre>

      <h4 id="LWIP_NSC_IPV6_SET">Marco <span>LWIP_NSC_IPV6_SET</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_IPV6_SET                256
</code></pre>
      <pre class="doc-comment">/** IPv6 address was added */</pre>

      <h4 id="LWIP_NSC_IPV6_ADDR_STATE_CHANGED">Marco <span>LWIP_NSC_IPV6_ADDR_STATE_CHANGED</span></h4>
      <pre class="doc-declare"><code>#define LWIP_NSC_IPV6_ADDR_STATE_CHANGED 512
</code></pre>
      <pre class="doc-comment">/** IPv6 address state has changed */</pre>

      <h4 id="NETIF_DECLARE_EXT_CALLBACK(name)">Marco <span>NETIF_DECLARE_EXT_CALLBACK(name)</span></h4>
      <pre class="doc-declare"><code>#define NETIF_DECLARE_EXT_CALLBACK(name) static netif_ext_callback_t name;
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="NETIF_DECLARE_EXT_CALLBACK">Marco <span>NETIF_DECLARE_EXT_CALLBACK</span></h4>
      <pre class="doc-declare"><code>#define NETIF_DECLARE_EXT_CALLBACK(name)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_add_ext_callback">Marco <span>netif_add_ext_callback</span></h4>
      <pre class="doc-declare"><code>#define netif_add_ext_callback(callback, fn)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_remove_ext_callback">Marco <span>netif_remove_ext_callback</span></h4>
      <pre class="doc-declare"><code>#define netif_remove_ext_callback(callback)
</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_invoke_ext_callback">Marco <span>netif_invoke_ext_callback</span></h4>
      <pre class="doc-declare"><code>#define netif_invoke_ext_callback(netif, reason, args)
</code></pre>
      <pre class="doc-comment"></pre>
      <h3 id="functions">Functions</h3>
      

      <h4 id="netif_alloc_client_data_id">Func <span>netif_alloc_client_data_id</span></h4>
      <pre class="doc-declare"><code>u8_t netif_alloc_client_data_id(void);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_init">Func <span>netif_init</span></h4>
      <pre class="doc-declare"><code>void netif_init(void);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_addr">Func <span>netif_set_addr</span></h4>
      <pre class="doc-declare"><code>void netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask,
                   const ip4_addr_t *gw);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_remove">Func <span>netif_remove</span></h4>
      <pre class="doc-declare"><code>void netif_remove(struct netif * netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_default">Func <span>netif_set_default</span></h4>
      <pre class="doc-declare"><code>void netif_set_default(struct netif *netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_ipaddr">Func <span>netif_set_ipaddr</span></h4>
      <pre class="doc-declare"><code>void netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_netmask">Func <span>netif_set_netmask</span></h4>
      <pre class="doc-declare"><code>void netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_gw">Func <span>netif_set_gw</span></h4>
      <pre class="doc-declare"><code>void netif_set_gw(struct netif *netif, const ip4_addr_t *gw);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_up">Func <span>netif_set_up</span></h4>
      <pre class="doc-declare"><code>void netif_set_up(struct netif *netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_down">Func <span>netif_set_down</span></h4>
      <pre class="doc-declare"><code>void netif_set_down(struct netif *netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_status_callback">Func <span>netif_set_status_callback</span></h4>
      <pre class="doc-declare"><code>void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_remove_callback">Func <span>netif_set_remove_callback</span></h4>
      <pre class="doc-declare"><code>void netif_set_remove_callback(struct netif *netif, netif_status_callback_fn remove_callback);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_link_up">Func <span>netif_set_link_up</span></h4>
      <pre class="doc-declare"><code>void netif_set_link_up(struct netif *netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_link_down">Func <span>netif_set_link_down</span></h4>
      <pre class="doc-declare"><code>void netif_set_link_down(struct netif *netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_set_link_callback">Func <span>netif_set_link_callback</span></h4>
      <pre class="doc-declare"><code>void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_loop_output">Func <span>netif_loop_output</span></h4>
      <pre class="doc-declare"><code>err_t netif_loop_output(struct netif *netif, struct pbuf *p);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_poll">Func <span>netif_poll</span></h4>
      <pre class="doc-declare"><code>void netif_poll(struct netif *netif);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_poll_all">Func <span>netif_poll_all</span></h4>
      <pre class="doc-declare"><code>void netif_poll_all(void);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_input">Func <span>netif_input</span></h4>
      <pre class="doc-declare"><code>err_t netif_input(struct pbuf *p, struct netif *inp);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_set">Func <span>netif_ip6_addr_set</span></h4>
      <pre class="doc-declare"><code>void netif_ip6_addr_set(struct netif *netif, s8_t addr_idx, const ip6_addr_t *addr6);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_set_parts">Func <span>netif_ip6_addr_set_parts</span></h4>
      <pre class="doc-declare"><code>void netif_ip6_addr_set_parts(struct netif *netif, s8_t addr_idx, u32_t i0, u32_t i1, u32_t i2, u32_t i3);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ip6_addr_set_state">Func <span>netif_ip6_addr_set_state</span></h4>
      <pre class="doc-declare"><code>void netif_ip6_addr_set_state(struct netif* netif, s8_t addr_idx, u8_t state);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_get_ip6_addr_match">Func <span>netif_get_ip6_addr_match</span></h4>
      <pre class="doc-declare"><code>s8_t netif_get_ip6_addr_match(struct netif *netif, const ip6_addr_t *ip6addr);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_create_ip6_linklocal_address">Func <span>netif_create_ip6_linklocal_address</span></h4>
      <pre class="doc-declare"><code>void netif_create_ip6_linklocal_address(struct netif *netif, u8_t from_mac_48bit);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_add_ip6_address">Func <span>netif_add_ip6_address</span></h4>
      <pre class="doc-declare"><code>err_t netif_add_ip6_address(struct netif *netif, const ip6_addr_t *ip6addr, s8_t *chosen_idx);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_name_to_index">Func <span>netif_name_to_index</span></h4>
      <pre class="doc-declare"><code>u8_t netif_name_to_index(const char *name);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_add_ext_callback">Func <span>netif_add_ext_callback</span></h4>
      <pre class="doc-declare"><code>void netif_add_ext_callback(netif_ext_callback_t* callback, netif_ext_callback_fn fn);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_remove_ext_callback">Func <span>netif_remove_ext_callback</span></h4>
      <pre class="doc-declare"><code>void netif_remove_ext_callback(netif_ext_callback_t* callback);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_invoke_ext_callback">Func <span>netif_invoke_ext_callback</span></h4>
      <pre class="doc-declare"><code>void netif_invoke_ext_callback(struct netif* netif, netif_nsc_reason_t reason, const netif_ext_callback_args_t* args);</code></pre>
      <pre class="doc-comment"></pre>
      <h3 id="vars">Vars</h3>
      

      <h4 id="netif">Variable <span>netif</span></h4>
      <pre class="doc-declare"><code>struct netif;</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif">Variable <span>netif</span></h4>
      <pre class="doc-declare"><code>struct netif *netif_add_noaddr(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif">Variable <span>netif</span></h4>
      <pre class="doc-declare"><code>struct netif *netif_add(struct netif *netif,
                           const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw,
                           void *state, netif_init_fn init, netif_input_fn input);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif">Variable <span>netif</span></h4>
      <pre class="doc-declare"><code>struct netif *netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif">Variable <span>netif</span></h4>
      <pre class="doc-declare"><code>struct netif *netif_find(const char *name);</code></pre>
      <pre class="doc-comment">/* Returns a network interface given its name. The name is of the form
   "et0", where the first two letters are the "name" field in the
   netif structure, and the digit is in the num field in the same
   structure. */</pre>

      <h4 id="char">Variable <span>char</span></h4>
      <pre class="doc-declare"><code>char * netif_index_to_name(u8_t idx, char *name);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif">Variable <span>netif</span></h4>
      <pre class="doc-declare"><code>struct netif* netif_get_by_index(u8_t idx);</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_ext_callback">Variable <span>netif_ext_callback</span></h4>
      <pre class="doc-declare"><code>struct netif_ext_callback;</code></pre>
      <pre class="doc-comment"></pre>
      <h3 id="consts">Consts</h3>
      
      <h3 id="types">Types</h3>
      
      <h3 id="typedefs">Typedefs</h3>
      

      <h4 id="netif_init_fn">Typedef <span>netif_init_fn</span></h4>
      <pre class="doc-declare"><code>typedef err_t (*netif_init_fn)(struct netif *netif);
</code></pre>
      <pre class="doc-comment">/** Function prototype for netif init functions. Set up flags and output/linkoutput
 * callback functions in this function.
 *
 * @param netif The netif to initialize
 */</pre>

      <h4 id="netif_input_fn">Typedef <span>netif_input_fn</span></h4>
      <pre class="doc-declare"><code>typedef err_t (*netif_input_fn)(struct pbuf *p, struct netif *inp);
</code></pre>
      <pre class="doc-comment">/** Function prototype for netif->input functions. This function is saved as 'input'
 * callback function in the netif struct. Call it when a packet has been received.
 *
 * @param p The received packet, copied into a pbuf
 * @param inp The netif which received the packet
 * @return ERR_OK if the packet was handled
 *         != ERR_OK is the packet was NOT handled, in this case, the caller has
 *                   to free the pbuf
 */</pre>

      <h4 id="netif_output_fn">Typedef <span>netif_output_fn</span></h4>
      <pre class="doc-declare"><code>typedef err_t (*netif_output_fn)(struct netif *netif, struct pbuf *p,
      const ip4_addr_t *ipaddr);</code></pre>
      <pre class="doc-comment">/** Function prototype for netif->output functions. Called by lwIP when a packet
 * shall be sent. For ethernet netif, set this to 'etharp_output' and set
 * 'linkoutput'.
 *
 * @param netif The netif which shall send a packet
 * @param p The packet to send (p->payload points to IP header)
 * @param ipaddr The IP address to which the packet shall be sent
 */</pre>

      <h4 id="netif_output_ip6_fn">Typedef <span>netif_output_ip6_fn</span></h4>
      <pre class="doc-declare"><code>typedef err_t (*netif_output_ip6_fn)(struct netif *netif, struct pbuf *p,
      const ip6_addr_t *ipaddr);</code></pre>
      <pre class="doc-comment">/** Function prototype for netif->output_ip6 functions. Called by lwIP when a packet
 * shall be sent. For ethernet netif, set this to 'ethip6_output' and set
 * 'linkoutput'.
 *
 * @param netif The netif which shall send a packet
 * @param p The packet to send (p->payload points to IP header)
 * @param ipaddr The IPv6 address to which the packet shall be sent
 */</pre>

      <h4 id="netif_linkoutput_fn">Typedef <span>netif_linkoutput_fn</span></h4>
      <pre class="doc-declare"><code>typedef err_t (*netif_linkoutput_fn)(struct netif *netif, struct pbuf *p);
</code></pre>
      <pre class="doc-comment">/** Function prototype for netif->linkoutput functions. Only used for ethernet
 * netifs. This function is called by ARP when a packet shall be sent.
 *
 * @param netif The netif which shall send a packet
 * @param p The packet to send (raw ethernet packet)
 */</pre>

      <h4 id="netif_status_callback_fn">Typedef <span>netif_status_callback_fn</span></h4>
      <pre class="doc-declare"><code>typedef void (*netif_status_callback_fn)(struct netif *netif);
#if LWIP_IPV4 && LWIP_IGMP
/** Function prototype for netif igmp_mac_filter functions */
typedef err_t (*netif_igmp_mac_filter_fn)(struct netif *netif,
      const ip4_addr_t *group, enum netif_mac_filter_action action);</code></pre>
      <pre class="doc-comment">/** Function prototype for netif status- or link-callback functions. */</pre>

      <h4 id="netif_mld_mac_filter_fn">Typedef <span>netif_mld_mac_filter_fn</span></h4>
      <pre class="doc-declare"><code>typedef err_t (*netif_mld_mac_filter_fn)(struct netif *netif,
      const ip6_addr_t *group, enum netif_mac_filter_action action);</code></pre>
      <pre class="doc-comment">/** Function prototype for netif mld_mac_filter functions */</pre>

      <h4 id="netif_addr_idx_t">Typedef <span>netif_addr_idx_t</span></h4>
      <pre class="doc-declare"><code>typedef u16_t netif_addr_idx_t;
#define NETIF_ADDR_IDX_MAX 32767
#else
typedef u8_t netif_addr_idx_t;
#define NETIF_ADDR_IDX_MAX 127</code></pre>
      <pre class="doc-comment"></pre>

      <h4 id="netif_nsc_reason_t">Typedef <span>netif_nsc_reason_t</span></h4>
      <pre class="doc-declare"><code>typedef u16_t netif_nsc_reason_t;
</code></pre>
      <pre class="doc-comment">/**
 * @ingroup netif
 * Extended netif status callback (NSC) reasons flags.
 * May be extended in the future!
 */</pre>

      <h4 id="link_changed;
">Typedef <span>link_changed;
</span></h4>
      <pre class="doc-declare"><code>typedef union
{
 /** Args to LWIP_NSC_LINK_CHANGED callback */
 struct link_changed_s
 {
   /** 1: up; 0: down */
   u8_t state;
 } link_changed;
</code></pre>
      <pre class="doc-comment">/** @ingroup netif
 * Argument supplied to netif_ext_callback_fn.
 */</pre>

      <h4 id="netif_ext_callback_fn">Typedef <span>netif_ext_callback_fn</span></h4>
      <pre class="doc-declare"><code>typedef void (*netif_ext_callback_fn)(struct netif* netif, netif_nsc_reason_t reason, const netif_ext_callback_args_t* args);
</code></pre>
      <pre class="doc-comment">/**
 * @ingroup netif
 * Function used for extended netif status callbacks
 * Note: When parsing reason argument, keep in mind that more reasons may be added in the future!
 * @param netif netif that is affected by change
 * @param reason change reason
 * @param args depends on reason, see reason description
 */</pre>

      <h4 id="netif_ext_callback_t;
">Typedef <span>netif_ext_callback_t;
</span></h4>
      <pre class="doc-declare"><code>typedef struct netif_ext_callback
{
 netif_ext_callback_fn callback_fn;
 struct netif_ext_callback* next;
} netif_ext_callback_t;
</code></pre>
      <pre class="doc-comment"></pre>
    </div>
  </body>
</html>
            